Skip to main content
Quang Liem
💬
0 discussions

Portal App


Portal App is an web application that support for business team manage all call centers of Gcalls easily

I. Functionality


  • Management data of call center
    • Tenant management
    • User management
    • Sip management
    • Role management
  • Decentralization call center
    • Add/Remove a tenant to decentralization
  • Record
    • CRD PBX
    • CRUD PBX's domains

II. Packages

1. Dependencies

1.1 Server

  • Abortcontroller-polyfill - A library that polyfills the AbortController API for older browsers Abortcontroller-polyfill
  • Axios - Promise based HTTP client for the browser and node.js Axios
  • Bluebird - Bluebird is a fully featured promise library with focus on innovative features and performance Bluebird
  • Body-parser - Node.js body parsing middleware Body-parser
  • Compression - Node.js compression middleware Compression
  • Connect-multiparty - Middleware for handling multipart/form-data Connect-multiparty
  • Cors - Node.js CORS middleware Cors
  • Dotenv-webpack - A secure webpack plugin that supports dotenv and other environment variables and only exposes what you choose and use Dotenv-webpack
  • Dotenv - Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env Dotenv
  • Ejs - Embedded JavaScript templates Ejs
  • Express-session - Simple session middleware for Express Express-session
  • Express - Fast, unopinionated, minimalist web framework for node Express
  • Global - Global is a single instance of a class that can be accessed from anywhere Global
  • I18next - I18next is an internationalization-framework written in and for JavaScript I18next
  • Less-watch-compiler - A compiler for LESS that watches files, compiles new changes and optionally minifies the output Less-watch-compiler
  • Less - The dynamic stylesheet language Less
  • Morgan - HTTP request logger middleware for node.js Morgan
  • Nodemailer - Send e-mails from Node.js Nodemailer
  • React-bootstrap-table - It's a react table for bootstrap React-bootstrap-table
  • React-dom - This package serves as the entry point of the DOM-related rendering paths React-dom
  • React-redux-multilingual - A simple react-redux multilingual library React-redux-multilingual
  • React-redux - Official React bindings for Redux React-redux
  • React-router-dom - DOM bindings for React Router React-router-dom
  • React-router - Declarative routing for React React-router
  • React-scroll - Component for animating vertical scrolling React-scroll
  • React - React is a JavaScript library for building user interfaces React
  • Redux-thunk - Thunk middleware for Redux Redux-thunk
  • Redux - Redux is a predictable state container for JavaScript apps Redux
  • Rotating-file-stream - Creates a stream.Writable to a file which is rotated Rotating-file-stream
  • Serve-favicon - Node.js middleware for serving a favicon Serve-favicon
  • Sweetalert2 - A beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes Sweetalert2
  • Uuid - RFC4122 (v1, v4, and v5) UUIDs Uuid
  • Webpack-dev-middleware - Offers a dev middleware for webpack, which arguments a live bundle to a directory Webpack-dev-middleware
  • Webpack-hot-middleware - Webpack hot reloading you can attach to your own server Webpack-hot-middleware
  • Webpack - A bundler for javascript and friends Webpack
  • Winston - A logger for just about everything Winston

2. Dev dependencies

  • Babel-core - A library for using babel-register etc. with webpack Babel-core
  • Babel-loader - This package allows transpiling JavaScript files using Babel and webpack Babel-loader
  • Babel-plugin-transform-decorators-legacy - A plugin for Babel 6 that (mostly) replicates the old decorator behavior from Babel 5 Babel-plugin-transform-decorators-legacy
  • Babel-polyfill - Provides polyfills necessary for a full ES2015+ environment Babel-polyfill
  • Babel-preset-es2015 - Babel preset for all es2015 plugins Babel-preset-es2015
  • Babel-preset-react - Babel preset for all React plugins Babel-preset-react
  • Babel-preset-stage-0 - Babel preset for stage 0 plugins Babel-preset-stage-0
  • Babel - Babel is a compiler for writing next generation JavaScript Babel
  • Nodemon - Simple monitor script for use during development of a node.js app Nodemon
  • Webpack-cli - Webpack's Command Line Interface Webpack-cli

III. Source tree

.
├── .babelrc
├── client
│ ├── Agent
│ │ ├── actions
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── Integration.js
│ │ │ ├── RecordDomain.js
│ │ │ ├── Role.js
│ │ │ ├── Sip.js
│ │ │ └── Template.js
│ │ ├── app.js
│ │ ├── components
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── Decentralization.js
│ │ │ ├── Endpoints.js
│ │ │ ├── IndexPage.js
│ │ │ ├── Integration.js
│ │ │ ├── Integrator.js
│ │ │ ├── Mail.js
│ │ │ ├── Record.js
│ │ │ ├── RecordMode.js
│ │ │ ├── Role.js
│ │ │ ├── SIP.js
│ │ │ ├── Template.js
│ │ │ └── User.js
│ │ ├── constants
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── Integration.js
│ │ │ ├── Role.js
│ │ │ ├── Sip.js
│ │ │ └── Template.js
│ │ ├── i18n.js
│ │ ├── Loading.js
│ │ ├── mapper.json
│ │ ├── reducers
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── index.js
│ │ │ ├── Integration.js
│ │ │ ├── RecordDomain.js
│ │ │ ├── Role.js
│ │ │ ├── Sip.js
│ │ │ └── Template.js
│ │ └── store.js
│ ├── Anonymous
│ │ ├── app.js
│ │ └── components
│ │ └── SignIn.js
│ └── library
│ └── debug.js
├── Dockerfile
├── .dockerignore
├── .env
├── .gitignore
├── index.js
├── jsonwebtoken
│ └── index.js
├── package.json
├── package-lock.json
├── public
│ ├── css
│ │ ├── admin.css
│ │ ├── bootstrap-datetimepicker.min.css
│ │ ├── bootstrap.min.css
│ │ ├── bootstrap-select.min.css
│ │ ├── core.css
│ │ ├── font-awesome.min.css
│ │ ├── nv.d3.css
│ │ ├── perfect-scrollbar.css
│ │ ├── react-bootstrap-table.min.css
│ │ └── signin.css
│ ├── fonts
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ ├── fontawesome-webfont.woff2
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ ├── glyphicons-halflings-regular.woff2
│ │ ├── Material-Design-Iconic-Font.ttf
│ │ ├── Material-Design-Iconic-Font.woff
│ │ └── Material-Design-Iconic-Font.woff2
│ ├── img
│ │ ├── empty-activity.png
│ │ ├── favicon.png
│ │ ├── Gcalls-plus-webphone.jpg
│ │ ├── icon-import-success.png
│ │ ├── icon-import-warning.png
│ │ └── logo.png
│ └── js
│ ├── bootstrap-datetimepicker.min.js
│ ├── bootstrap.min.js
│ ├── bootstrap-select.min.js
│ ├── charts-nvd3.js
│ ├── d3.js
│ ├── detect.js
│ ├── jquery-1.10.2.min.js
│ ├── jquery-latest.js
│ ├── jquery.min.js
│ ├── jssip-2.0.6.min.js
│ ├── jssip-3.2.4.min.js
│ ├── moment.min.js
│ ├── offline.min.js
│ ├── parsley.min.js
│ ├── perfect-scrollbar.js
│ ├── plyr.js
│ ├── socket.io.js
│ ├── vi.js
│ └── waves.js
├── root
│ ├── .bash_history
│ ├── .bashrc
│ ├── .cache
│ │ └── motd.legal-displayed
│ ├── .lesshst
│ ├── snap
│ │ └── lxd
│ │ ├── 23680
│ │ ├── common
│ │ └── current
│ ├── .ssh
│ │ └── authorized_keys
│ └── .viminfo
├── server
│ ├── config
│ │ ├── access.js
│ │ ├── authorization.js
│ │ ├── feature.js
│ │ ├── host.js
│ │ └── mailer.js
│ ├── lib
│ │ ├── access.js
│ │ ├── email.js
│ │ ├── feature.js
│ │ ├── logger.js
│ │ ├── password.js
│ │ └── phonenumber.js
│ ├── middleware
│ │ ├── authenticate.js
│ │ └── authorization.js
│ ├── route
│ │ ├── authenticated
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── Integration.js
│ │ │ ├── RecordDomain.js
│ │ │ ├── Sip.js
│ │ │ └── User.js
│ │ ├── index.js
│ │ └── unauthenticated
│ │ ├── ForgetPassword.js
│ │ ├── Invite.js
│ │ ├── Notify.js
│ │ └── User.js
│ └── views
│ ├── admin.html
│ ├── agent.html
│ └── non-user.html
├── server.js
└── webpack.config.js

IV. Installation


  • Clone project:
git clone https://gitlab.com/gcalls-opensource/gcallsfront.git
  • Install utility modules:
npm install
  • Start server:

    • run in development

      npm i -g pm2
      npm run dev
    • run in production

      npm run prod